1. Field of the Invention
The present invention relates to the field of data processing systems. Specifically, the present invention relates to a method and system for automatically selecting and installing an application onto a portable (e.g., palmtop) computer system.
2. Related Art
As the components required to build a computer system have reduced in size, new categories of computer systems have emerged. One of the more recent categories of computer systems is the portable or xe2x80x9cpalmtopxe2x80x9d computer system, or personal digital assistant (PDA). A palmtop computer system is a computer that is small enough to be held in the hand of a user and is thus xe2x80x9cpalm-sized.xe2x80x9d As a result, palmtops are readily carried about in a briefcase or purse, and some palmtops are compact enough to fit into a person""s pocket. By virtue of their size, palmtop computer systems are also lightweight and so are exceptionally portable and convenient.
The portability and convenience of palmtops has made it increasingly desirable to increase the number and types of applications that can be run on them. It is advantageous to expand the capabilities of a palmtop so that it can provide many of the same, if not the same, services provided by a desktop or laptop computer system, particularly with regard to access to the World Wide Web (WWW). As such, information currently available via the Internet using personal computers, such as on-line access to news and financial information, can also be provided via a palmtop. In addition, a palmtop can be used for electronic mail (xe2x80x9ce-mailxe2x80x9d) and multi-player gaming, and features such as voice recognition can also be added.
It has proven to be convenient to exchange data and information between a host computer and a palmtop computer using a communication interface, such as a serial or parallel input port. It has also proven to be convenient to transfer an application installed on one palmtop computer to another palmtop. Accordingly, many palmtop computers include an infrared communication port that can be used for transmitting data and applications between palmtops (commonly known as xe2x80x9cbeamingxe2x80x9d). Beaming applications from one palmtop to another has proven to be popular among users.
The portability and convenience of palmtops comes with a tradeoff in processing power and memory space. Processing issues can be addressed in part using processors that are smaller and faster than preceding generations, and innovative techniques are also available to store data and information more densely in smaller places. Still, processing and data storage issues may be present due to the size of the operating system needed to support the various applications loaded on the palmtop.
As the number and, in particular, the variety of applications increase, the operating system needed to run those applications increases in complexity and correspondingly in size. The traditional model for generic, limited resource devices such as palmtops is that a memory image is built and installed on the device. The memory image provides a certain set of abstract operating system services for the applications on the device. However, as the application set expands and becomes more diverse, the operating system needs to grow in size and abstraction and as a result uses a greater portion of the resources available in the device.
In addition, many applications today utilize the well-known Component Object Model (COM) software architecture as well as other well-known architectures such as Common Object Request Broker Architecture (CORBA), Distributed COM (DCOM), and Distributed Computing Environment (DCE). COM is based on software objects or modules that are well encapsulated and accessed through interfaces provided by services such as Object Linking and Embedding (OLE) and ActiveX. COM objects can interoperate with other COM components through their interfaces. In this way, COM allows applications to be built from different components.
Thus, with a COM-based architecture, the operating system on the palmtop provides services supporting the execution of an application, in essence building the application by defining and implementing interfaces and modules between its various COM components when the application is called. Accordingly, with COM applications, further complexity is added to the operating system, requiring more coding and hence more memory.
A recent technique for reducing the memory space needed for the operating system is to build and load the operating system memory image when the palmtop is coupled to a host computer system during a synchronization process (xe2x80x9csync-time image bindingxe2x80x9d). Typically, the palmtop is placed into a device, such as a cradle, that is communicatively coupled to the host computer system via a serial or parallel input port. The synchronization process is used to allow the computer system and the palmtop to share information such as applications and databases. With the sync-time image binding technique, the operating system is configured so that it includes only the specific code and resources required to support the palmtop and the applications installed on the palmtop. Thus, software/code or resources not required by the palmtop or its applications are not installed, thereby saving memory space.
However, the sync-time image binding technique can cause a problem when a user wishes to add an application to his/her palmtop by beaming the application from another palmtop. While the palmtop acting as the source of the application will have the operating system code and resources needed to support the application, the palmtop receiving the application may not. Thus, the application may be satisfactorily received, but the application cannot be used.
In addition, the palmtops may have different hardware that prevents operation of an application beamed from one palmtop to another. For example, the processors used by the palmtops may be different, and so each palmtop may require a different version of the same application that is compatible with their processor. Similarly, one palmtop may use a monochrome display device and the other may use a color display device. A version of an application specifically designed for a color display may not function as well with a monochrome display, or vice versa. Under these circumstances, the application can likely be beamed from one palmtop to the other, but it may not be able to function to its fullest capabilities on the palmtop receiving the application.
Another disadvantage associated with beaming is that, in those cases where the application is being sold or where licensing agreements do not permit the application to be freely shared, beaming an application between compatible palmtops can provide a ready method for circumventing the commercial and intellectual property interests of a distributor or vendor for the application. In other words, copies of the application can be beamed and thereby distributed between palmtops without having to purchase the application or otherwise compensate the entity that owns the intellectual property rights to the application.
When an application cannot be beamed from one palmtop to another because, for instance, the palmtops do not share compatible hardware or software, or because the application is not available from another palmtop, a user can instead locate the application on his/her own and then install the application by synchronizing the palmtop to a host computer system. However, there are also disadvantages to installing an application onto a palmtop in this manner. First, the application must be located, both at its source and later at a location within the host computer system. For example, if the application is obtained from an external source such as a site on the WWW, the Uniform Resource Locator for the application must be determined and properly entered so that the application can be found. Once the application is located, the proper version must be selected. For example, the user must select the version that is compatible with the hardware and software capabilities of his/her palmtop. Next, the application is downloaded onto the computer system from the WWW, given a file name, and stored somewhere in the computer system. The user must then locate the file in computer system memory.
Typically, the file is in a compressed format, so the user must locate the proper software for decompressing the file according to the compression scheme used, and then execute that software. Once decompressed, the file has to be tagged in some manner to indicate that it is to be downloaded onto the palmtop during a subsequent synchronization. In one implementation, the user accomplishes this by dragging the file into a window; files in that window are installed at the next synchronization between the computer system and the palmtop.
Thus, the process for installing an application onto a palmtop via a host computer system can be somewhat complex and tedious, and is also prone to error. For an occasional user not familiar with the particulars of locating, downloading and decompressing files, or not familiar with the specific hardware and software configurations of his/her palmtop, the task of installing a new application may to be a challenge. Such users may be inclined to avoid installing new application onto their palmtops, or perhaps will steer clear of palmtops altogether. Even experienced users may be daunted by the involved process for installing a new application onto a palmtop.
Accordingly, what is needed is a system and/or method that can allow an application installed on one palmtop to be readily installed on another palmtop, in particular in those instances in which a functioning version of the application cannot be beamed from one palmtop to the other (because, for example, the hardware or the operating systems are not compatible between the palmtops). What is also needed is a system and/or method that can satisfy the above need and that can provide a user-friendly mechanism for locating a version of the application proper for a particular type of palmtop, and for installing the application onto the palmtop. In addition, what is needed is a system and/or method that can satisfy the above needs and that can, when so desired, provide a mechanism for providing billing information associated with installing the application onto a palmtop. The present invention provides these advantages and others not specifically mentioned above but described in the sections to follow.
A method and system are described for installing an application on a client device, such as a portable (or palmtop) computer system. In the present embodiment, instead of transferring the application to the client device from another client device, the client device receives a description of the application from the other client device. When a host device (e.g., a host computer system) and the client device are synchronized, the description is automatically communicated from the client device to the host device, which is also in communication with a source of applications. In one embodiment, the host device is in communication with a site on the World Wide Web. In another embodiment, the source of applications is a site on an intranet. In yet another embodiment, the application source is a data storage device such as a magnetic or optical disk.
In the present embodiment, hardware and software attributes of the client device can also be automatically communicated to the host device by the client device. The host device automatically communicates to the application source a specification comprising the description of the application as well as the attributes of the client device. The host device receives from the source one or more software elements (e.g., a component, object or file, or the application itself) characterized by the specification. The host device automatically makes the software element(s) ready for installation on the client device. The software element(s) are then installed on the client device when the host device and the client device are subsequently synchronized.
In one embodiment, the description of the application is transferred to the client device from the other client device using a wireless link (e.g., an infrared beam). In various embodiments, the description of the application can include a version number for the application, a vendor or application name, a description of the software elements (e.g., components, files or objects) needed to build the application, or a location of these software elements (e.g., a Uniform Resource Locator) or of the application itself.
In other embodiments, the attributes of the client device considered in the specification can include the type of processor, the type of display device (e.g., color or monochrome), or the type of operating system used by the client device, or the amount of memory space available in the client device.
In another embodiment, billing and payment information can be provided to the host device from the application source along with the software elements for the application.
In yet another embodiment, the software elements can be automatically decompressed (when they are in a compressed format) and tagged to indicate they are to be installed on the client device during a subsequent synchronization of the host and client devices.
The present invention thus provides a user-friendly method of transferring an application from one palmtop to another, such as for those cases in which the application as configured for one palmtop is not compatible with the hardware or software used by the other palmtop. The process of identifying and retrieving the appropriate version of an application and making the application ready for installation can be performed automatically, substantially without user intervention. The user does not have to know the particulars of the application to be installed or of the hardware and software used by his/her palmtop. The user also does not need to intervene in order to prepare the application for installation. The present invention therefore simplifies for users the process of finding an application, selecting the proper version, and downloading the application onto the palmtop.